#include"comm.hpp"
//写入方设计思路：往共享内存区写入数据后，我们往管道发送一个字符提醒读取方我们已经往共享内存区写入数据了
int main()
{
    log.Enable(Mulfile);

    //获取共享内存的id
    int shmid=GetShm();
    //获取共享内存的地址添加到进程的共享段中
    char*shmaddr=(char*)shmat(shmid,nullptr,0);//挂接

    int fd=open(FIFO_FILE,O_WRONLY);//写的方式打开管道
    if(fd<0)
    {
        log(Fatal,"error string:%s,error code:%d",strerror(errno),errno);
        exit(FIFO_OPEN_ERR);
    }

    //一旦有了共享内存，并且挂接到自己到地址空间中,就可以直接当做自己的空间使用
    //不需要系统调用

    while(true)
    {
        cout<<"Please Enter@";
        fgets(shmaddr,4096,stdin);//从键盘输入数据到目标地址，这里是输入到共享内存段中

        write(fd,"c",1);//往管道写入一个字符，通知对方我们已经在共享内存写入数据了
    }
    //当管道的读方关闭时，写方进程会被杀死，所以不用设置退出路径
    shmdt(shmaddr);//断开挂接
    close(fd);
    return 0;
}